home *** CD-ROM | disk | FTP | other *** search
-
- public _slidebytetbl
-
- ;═════════════════════════════════════════════════════════════════════════════
- slidebytetbl db 0,7fh dup(-1), 80h dup(1)
- db 0,-1,7eh dup(-2), 7fh dup(2),1
-
- ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
- ; Slide a block of bytes closer to another block in value
- ; In:
- ; AL - max value to slide by minus 1 (actually, table index)
- ; ECX - number of bytes to slide
- ; ESI -> block to slide towards
- ; EDI -> block to slide
- ; Out:
- ; CF=1 - no changes made
- ; CF=0 - at least one change made
- ; EAX,EBX,ECX,EDX,ESI,EDI - ?
- ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
- _slidebytetbl:
- xor ebx,ebx
- mov bh,al
- xor dh,dh
- add ebx,offset slidebytetbl
- xor eax,eax
- slidebytetbll0:
- mov al,[edi]
- mov dl,al
- sub al,[esi]
- or dh,al
- add dl,[ebx+eax]
- mov [edi],dl
- inc edi
- inc esi
- dec ecx
- jnz slidebytetbll0
- cmp dh,1
- ret
-
-